Scanbox offers a memory-mapped interface mechanism to expose incoming data to other processes. This facilitates a wide rage of customization by users that may want to display their data in different ways or do some on-line processing not currently supported by Scanbox.
We previously provided one example of how a real-time histogram of the data can be generated. Today we offer a simple modification of this code to show a rolling average display, where frames are weighted with an exponential window, can be implemented.
These additional processes can run concurrently with the Scanbox live display if your computer is fast enough. To lighten the load on the computer you can now choose to disable the Scanbox display in the “Image Display” panel.
Remember that plug-ins run on a separate Matlab process and from the yeti/mmap directory.
The code is self-explanatory:
% Simply rolling average plug-in for Scanbox
% Open memory mapped file -- define just the header first
mmfile = memmapfile('scanbox.mmap','Writable',true, ...
'Format', { 'int16' [1 16] 'header' } , 'Repeat', 1);
flag = 1;
% Define the forgetting factor 0 < delta <= 1
delta = 0.9; % this will generate an exponential decaying memory window: lambda^n
% Process all incoming frames until Scanbox stops
while(true)
while(mmfile.Data.header(1)<0) % wait for a new frame...
if(mmfile.Data.header(1) == -2) % exit if Scanbox stopped
return;
end
end
display(sprintf('Frame %06d',mmfile.Data.header(1))); % print frame# being processed
if(flag) % first time? Format chA according to lines/columns in data
mmfile.Format = {'int16' [1 16] 'header' ; ...
'uint16' double([mmfile.Data.header(2) mmfile.Data.header(3)]) 'chA'};
mchA = double(intmax('uint16')-mmfile.Data.chA);
flag = 0;
ih = imagesc(mchA); % setup display
axis off; % remove axis
colormap gray; % use gray colormap
truesize % true image size
else
mchA = delta*mchA + (1-delta)*double(intmax('uint16')-mmfile.Data.chA);
ih.CData = mchA;
end
mmfile.Data.header(1) = -1; % signal Scanbox that frame has been consumed!
drawnow limitrate;
end
clear(mmfile); % close the memory mapped file
close all; % close all figures
If you have any questions just post them below. Homework: Create a plug-in that shows areas of the image that are saturated in red (due date: Aug 8, 2016)
my dog ate my homework
You don’t have a dog